//
// Copyright (c) Microsoft.
// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.
//
// gstreamer_modules.cpp
//

#include "gstreamer_modules.h"

namespace Microsoft {
namespace CognitiveServices {
namespace Speech {
namespace Impl {

void spx_gst_init_base() {
#if defined(TARGET_OS_IPHONE)
    GST_PLUGIN_STATIC_REGISTER(coreelements);
    GST_PLUGIN_STATIC_REGISTER(app);
    GST_PLUGIN_STATIC_REGISTER(audioconvert);
    GST_PLUGIN_STATIC_REGISTER(mpg123);
    GST_PLUGIN_STATIC_REGISTER(audioresample);
    GST_PLUGIN_STATIC_REGISTER(audioparsers);
    GST_PLUGIN_STATIC_REGISTER(ogg);
    GST_PLUGIN_STATIC_REGISTER(opusparse);
    GST_PLUGIN_STATIC_REGISTER(opus);
    GST_PLUGIN_STATIC_REGISTER(wavparse);
    GST_PLUGIN_STATIC_REGISTER(alaw);
    GST_PLUGIN_STATIC_REGISTER(mulaw);
    GST_PLUGIN_STATIC_REGISTER(flac);
#endif
}

void spx_gst_init_extra() {
#if defined(TARGET_OS_IPHONE)
    GST_PLUGIN_STATIC_REGISTER(playback);

    //TODO: Need to enable the following on 1.16.0. Blocked on mac device
/*
    GST_PLUGIN_STATIC_REGISTER(adder);
    GST_PLUGIN_STATIC_REGISTER(audiomixer);
    GST_PLUGIN_STATIC_REGISTER(audiorate);
    GST_PLUGIN_STATIC_REGISTER(audiotestsrc);
    GST_PLUGIN_STATIC_REGISTER(compositor);
    GST_PLUGIN_STATIC_REGISTER(gio);
    GST_PLUGIN_STATIC_REGISTER(overlaycomposition);
    GST_PLUGIN_STATIC_REGISTER(pango);
    GST_PLUGIN_STATIC_REGISTER(rawparse);
    GST_PLUGIN_STATIC_REGISTER(typefindfunctions);
    GST_PLUGIN_STATIC_REGISTER(videoconvert);
    GST_PLUGIN_STATIC_REGISTER(videorate);
    GST_PLUGIN_STATIC_REGISTER(videoscale);
    GST_PLUGIN_STATIC_REGISTER(videotestsrc);
    GST_PLUGIN_STATIC_REGISTER(volume);
    GST_PLUGIN_STATIC_REGISTER(autodetect);
    GST_PLUGIN_STATIC_REGISTER(videofilter);
    GST_PLUGIN_STATIC_REGISTER(subparse);
    GST_PLUGIN_STATIC_REGISTER(theora);
    GST_PLUGIN_STATIC_REGISTER(vorbis);
    GST_PLUGIN_STATIC_REGISTER(ivorbisdec);
    GST_PLUGIN_STATIC_REGISTER(apetag);
    GST_PLUGIN_STATIC_REGISTER(auparse);
    GST_PLUGIN_STATIC_REGISTER(avi);
    GST_PLUGIN_STATIC_REGISTER(dv);
    GST_PLUGIN_STATIC_REGISTER(flv);
    GST_PLUGIN_STATIC_REGISTER(flxdec);
    GST_PLUGIN_STATIC_REGISTER(icydemux);
    GST_PLUGIN_STATIC_REGISTER(id3demux);
    GST_PLUGIN_STATIC_REGISTER(isomp4);
    GST_PLUGIN_STATIC_REGISTER(jpeg);
    GST_PLUGIN_STATIC_REGISTER(lame);
    GST_PLUGIN_STATIC_REGISTER(matroska);
    GST_PLUGIN_STATIC_REGISTER(multipart);
    GST_PLUGIN_STATIC_REGISTER(png);
    GST_PLUGIN_STATIC_REGISTER(speex);
    GST_PLUGIN_STATIC_REGISTER(taglib);
    GST_PLUGIN_STATIC_REGISTER(vpx);
    GST_PLUGIN_STATIC_REGISTER(wavenc);
    GST_PLUGIN_STATIC_REGISTER(wavpack);
    GST_PLUGIN_STATIC_REGISTER(y4menc);
    GST_PLUGIN_STATIC_REGISTER(adpcmdec);
    GST_PLUGIN_STATIC_REGISTER(adpcmenc);
    GST_PLUGIN_STATIC_REGISTER(bz2);
    GST_PLUGIN_STATIC_REGISTER(dashdemux);
    GST_PLUGIN_STATIC_REGISTER(dvbsuboverlay);
    GST_PLUGIN_STATIC_REGISTER(dvdspu);
    GST_PLUGIN_STATIC_REGISTER(hls);
    GST_PLUGIN_STATIC_REGISTER(id3tag);
    GST_PLUGIN_STATIC_REGISTER(kate);
    GST_PLUGIN_STATIC_REGISTER(midi);
    GST_PLUGIN_STATIC_REGISTER(mxf);
    GST_PLUGIN_STATIC_REGISTER(openh264);
    GST_PLUGIN_STATIC_REGISTER(pcapparse);
    GST_PLUGIN_STATIC_REGISTER(pnm);
    GST_PLUGIN_STATIC_REGISTER(rfbsrc);
    GST_PLUGIN_STATIC_REGISTER(siren);
    GST_PLUGIN_STATIC_REGISTER(smoothstreaming);
    GST_PLUGIN_STATIC_REGISTER(subenc);
    GST_PLUGIN_STATIC_REGISTER(videoparsersbad);
    GST_PLUGIN_STATIC_REGISTER(y4mdec);
    GST_PLUGIN_STATIC_REGISTER(jpegformat);
    GST_PLUGIN_STATIC_REGISTER(gdp);
    GST_PLUGIN_STATIC_REGISTER(rsvg);
    GST_PLUGIN_STATIC_REGISTER(openjpeg);
    GST_PLUGIN_STATIC_REGISTER(spandsp);
    GST_PLUGIN_STATIC_REGISTER(sbc);
    GST_PLUGIN_STATIC_REGISTER(asfmux);
    GST_PLUGIN_STATIC_REGISTER(dtsdec);
    GST_PLUGIN_STATIC_REGISTER(mpegpsdemux);
    GST_PLUGIN_STATIC_REGISTER(mpegpsmux);
    GST_PLUGIN_STATIC_REGISTER(mpegtsdemux);
    GST_PLUGIN_STATIC_REGISTER(mpegtsmux);
    GST_PLUGIN_STATIC_REGISTER(voaacenc);
    GST_PLUGIN_STATIC_REGISTER(a52dec);
    GST_PLUGIN_STATIC_REGISTER(amrnb);
    GST_PLUGIN_STATIC_REGISTER(amrwbdec);
    GST_PLUGIN_STATIC_REGISTER(asf);
    GST_PLUGIN_STATIC_REGISTER(dvdsub);
    GST_PLUGIN_STATIC_REGISTER(dvdlpcmdec);
    GST_PLUGIN_STATIC_REGISTER(xingmux);
    GST_PLUGIN_STATIC_REGISTER(realmedia);
    GST_PLUGIN_STATIC_REGISTER(x264);
    GST_PLUGIN_STATIC_REGISTER(libav);
    */

#endif
}

} } } } // Microsoft::CognitiveServices::Speech::Impl
